/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.diplomka.datalayer.dao;

import cz.fi.muni.diplomka.common.enumeration.ResearchType;
import cz.muni.fi.diplomka.datalayer.entity.ResearchInProgressEntity;
import java.util.List;

/**
 * Interface for manipulation with Research In Progress Entity
 *
 * @author Jakub Kutil
 */
public interface ResearchInProgressDao {

    /**
     * Add a ResearchInProgressEntity to DB
     *
     * @param researchInProgressEntity ResearchInProgressEntity to add
     */
    public void addResearchInProgress(ResearchInProgressEntity researchInProgressEntity);

    /**
     * Edits a ResearchInProgressEntity in DB
     *
     * @param researchInProgressEntity ResearchInProgressEntity to edit
     */
    public void editResearchInProgress(ResearchInProgressEntity researchInProgressEntity);

    /**
     * Deletes specified ResearchInProgressEntity from DB
     *
     * @param playerId ID of player
     * @param researchType name of ResearchInProgressEntity to delete
     */
    public void deleteResearchInProgress(Long playerId, ResearchType researchType);

    /**
     * Gets all ResearchInProgressEntities of specified player
     *
     * @param playerId ID of player
     *
     * @return List of ResearchInProgressEntities of player
     */
    public List<ResearchInProgressEntity> getAllResearchsInProgressForPlayer(Long playerId);

    /**
     * Gets all ResearchInProgressEntities
     *
     * @return List of all ResearchInProgressEntities
     */
    public List<ResearchInProgressEntity> getAllResearchsInProgress();
}
